// 定义store 仓库

// 01: 安装redux:  npm i redux

// 02: 使用redux 中的一个方法 createStore 方法
import {
    legacy_createStore as createStore,
    combineReducers,
    applyMiddleware,
    compose
} from 'redux';

// 引入redux-thunk
import reduxthunk from 'redux-thunk';


// 03: 定义默认的state 得数据
// const defaultstate = {
//     count: 0,
//     money: 100
// }

const state1 = { count: 0 }
const state2 = { money: 100 }
const reducer = (state = state1, actions) => {
    if (actions.type == '+') {
        // 该修改state数据的方式是替换,会导致原数据的丢失
        return {
            // ...state, // 保留原数据 可以去掉
            count: state.count + actions.payload
        }
    }
    // 如果没有匹配的标记type属性, 需要返回原state
    return state
}

const reducer1 = (state = state2, actions) => {

    if (actions.type == 'add') {
        // 该修改state数据的方式是替换,会导致原数据的丢失
        return {
            //...state, // 保留原数据 可以去掉
            money: state.money + 1
        }
    }

    // 如果没有匹配的标记type属性, 需要返回原state
    return state
}

const state3 = {
    schoolArr: []  // 定义全局数据state的 schoolArr
}
const reducer2 = (state = state3, actions) => {

    if (actions.type == 'setschool') {
        // 该修改state数据的方式是替换,会导致原数据的丢失
        return {
            //...state, // 保留原数据 可以去掉
            schoolArr: actions.payload
        }
    }

    // 如果没有匹配的标记type属性, 需要返回原state
    return state
}
// 04: 使用createStore 方法创建store 仓库
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;

const store = createStore(
    combineReducers({ reducer, reducer1, reducer2 }),
    // 配置中间件 reduxthunk,这样就可以异步派发修改state得任务了
    composeEnhancers(applyMiddleware(reduxthunk)));

// 05: 导出store
export default store



